#ifndef SORT_H_
#define SORT_H_

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>

void PrintArray(int* p, int n); //显示数组内容
void Swap(int* pa, int* pb);       //交换二个数的值

void InsertSort(int* p, int n); //插入排序
void ShellSort(int* p, int n); //希尔排序

void BubbleSort(int* p, int n); //冒泡排序

int GetMidIndex(int* p, int left, int right); //三数取中优化
void QuickSort1(int* p, int left, int right); //快速排序
void QuickSort2(int* p, int left, int right); //小区间优化版本
void QuickSort3(int* p, int left, int right); //非递归版本

void SelectSort(int* p, int n); //选择排序
void AdjustDown(int* p, int n, int root); //向下调整算法
void HeapSort(int* p, int n); //堆排序

void MergeSort(int* p, int n); //归并排序
void MergeSortNonR(int* p, int n); //非递归

#endif